package offer.offer04;

import java.math.BigInteger;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * 使用lambda表达式, 主要就是 +/- 之后是数字, 遇到别的都停止, 包括. " " ,
 * 好像不让用Pattern, 自己写个别的。
 * 正则难以匹配-adsf这种东西
 * 可以在LeetCode上加import语句来使用一些他会报错的类
 */
public class Solution67 {
    public int strToInt(String str) {
        String template = "[\\+|-]?\\d*";
        Pattern pattern = Pattern.compile(template);//创建模板
        Matcher matcher = pattern.matcher(str);
//        while (matcher.find()){
//            String group = matcher.group();
//            System.out.println(group);
//        }
        int result = 0;
        if(matcher.find()) {
            String resultStr = matcher.group();
            if(resultStr.equals("+") || resultStr.equals("-")) return 0;
            BigInteger initVal = new BigInteger(resultStr);
            BigInteger highVal = new BigInteger("" + Integer.MAX_VALUE);
            BigInteger lowVal = new BigInteger("" + Integer.MIN_VALUE);
            if(initVal.compareTo(highVal) == 1){
                result = Integer.MAX_VALUE;
            }else if(initVal.compareTo(lowVal) == -1){
                result = Integer.MIN_VALUE;
            }else {
                result = Integer.parseInt(resultStr);
            }
        }
        return result;
    }

    public static void main(String[] args) {
        String input = "sdfygfg sdfr _=+ -dfsg42 876 097096";
        System.out.println(new Solution67().strToInt(input));
    }
}
